Functionality and data for software applications can be provided over a network (e.g., the Internet) by a system of one or more computers. Software as a Service (SaaS), for example, is one way of providing software applications by centrally hosting applications on computing devices that are typically remotely located from the where the applications may be utilized and/or interacted with. Such “on-demand” software is often accessed by users using a web browser or another thin client.
Many types of software applications, especially those provided in “the cloud,” are configured to serve multiple client organizations. For example, a business application can serve different customers, which can be different people, businesses, merchants, etc. One way to design and structure applications and resources to accommodate multiple users is through the principle of multi-tenancy. In contrast to multi-instance architectures that utilize separate instances of an application operate at one location on behalf of multiple tenants, multi-tenancy is software architecture principle in which one single instance of an application or software executes at a location that can serve multiple tenants. Thus, for a conventional application using multi-tenancy, a single instance of the application runs on a server, instead of having separate application instances or hardware systems for different tenants. An example of a multi-tenant system is a computing system that is accessible to multiple independent parties to provide those parties with application execution and/or data storage.
A tenant is a group of users sharing a common view of a software application or collection of data. Thus, through a multi-tenant architecture, a software application is designed to provide every tenant a dedicated or customized version of the software instance. This dedicated view can include per-tenant data, configuration settings, specialized functionality, and/or other non-functional properties.
With a multi-tenant system, tenants do not need to install software, maintain backups, move data to laptops to provide portability, etc. Instead, each tenant simply needs to access the multi-tenant system to operate the applications and/or access that tenant's data. For example, a user need only have access to a user client device with network connectivity, such as a desktop computer with Internet access and a browser or other HTTP client, for example.
One type of multi-tenant cloud software is a multi-tenant database system. Multi-tenant database systems allow for users to access tenant-specific data from a network source that, to the user, appears to be dedicated and/or centralized, but might be distributed for backup, redundancy and/or performance reasons. Although there is an appearance for each tenant of a dedicated resource, many such tenants can access the same system to perform application functions such as manipulating that tenant's data.
In database systems, interactions such as accessing, retrieving and processing occur through queries made in accordance with the application program interface (API) protocol for the database. For example, a tenant may generate a query to interact with a relational database using Structured Query Language (SQL) statements. SQL statements are used both for interactive queries for data from the database (e.g., inserting data, updating data, selecting data, deleting data, etc.) and for gathering statistics and other data.